import router from './router'
import store from './store'
// import { Message } from 'element-ui'
import NProgress from 'nprogress' // 进度条
import 'nprogress/nprogress.css' // 进度条样式
import { getToken } from '@/utils/auth' // 从cookie获取令牌
import getPageTitle from '@/utils/get-page-title'
import { canTurnTo } from './utils/access'

NProgress.configure({ showSpinner: false }) // NPROGRESS配置

// const whiteList = ['/login'] // 白名单中重定向

const turnTo = (to, access, next) => {
  var can = canTurnTo(to.name, access, router.options.routes)
  if (can) next()
  else next({ replace: true, name: 'error_401' })
}
router.beforeEach(async(to, from, next) => {
  // 开始进度条
  NProgress.start()

  // 设置页面标题
  document.title = getPageTitle(to.meta.title)

  // ***********************************
  const hasToken = getToken()
  if (hasToken) {
    if (to.path === '/login') {
    } else {
      var userInfo = store.state.user.name
      if (userInfo) {
        turnTo(to, store.state.use.access, next)
      } else {
        console.log('登录成功，已有token')
        store.dispatch('user/getInfo').then(user => {
          turnTo(to, user.access, next)
        }).catch(() => {
          store.dispatch('user/resetToken')
          next('/login')
        })
      }
    }
  } else {
    if (to.path === '/login') {
      next()
    } else {
      next('/login')
      NProgress.done()
    }
  }
  // ***********************************
  // 确定用户是否已登录
  // const hasToken = getToken() // var hasToken = 获取token令牌()

  // if (hasToken) {
  //   if (to.path === '/login') {
  //     // 如果已登录，则重定向到主页
  //     // next({ path: '/' })
  //     // NProgress.done()
  //   } else {
  //     const hasGetUserInfo = store.getters.name
  //     if (hasGetUserInfo) {
  //       next()
  //     } else {
  //       try {
  //         // 获取用户信息
  //         await store.dispatch('user/getInfo')

  //         next()
  //       } catch (error) {
  //         // 删除令牌并转到登录页面重新登录
  //         await store.dispatch('user/resetToken')
  //         Message.error(error || 'Has Error')
  //         next(`/login?redirect=${to.path}`)
  //         NProgress.done()
  //       }
  //     }
  //   }
  // } else {
  //   /* 没有token令牌 */
  //   if (whiteList.indexOf(to.path) !== -1) {
  //     // 在免费登录白名单中，直接进入
  //     next()
  //   } else {
  //     // 其他没有访问权限的页面将被重定向到登录页面.
  //     next(`/login?redirect=${to.path}`)
  //     NProgress.done()
  //   }
  // }
// ++++++++++++++++++++++++++++++++
// var  hasToken  =  获取令牌()
// if(hasToken){
//   if(登录成功){
//     则跳转到主页
//   }else{
//     var userInfo = store.getters.name  获取用户名
//     if(userInfo){
//       到下个路由
//     }else{
//       获取用户信息().then(()=>{
//         前往下一级路由
//       }).catch(()=>{        
//         删除令牌重回到登录页面
//       })
//     }
//   }
// }else{
//   返回登录页面
// }
})

router.afterEach(() => {
  // 完成进度条
  NProgress.done()
})
